#ifndef __GSM_NETWORK_H_
#define __GSM_NETWORK_H_


#include "gsm.h"

#define lgsm_network_register_network       	NETWORK_Command_NetworkRegister


#define lgsm_network_get_gprs_status  				NETWORK_Command_QueryGprsNetworkRegistration


#define TLE_TDD_4G          1

#define GSM_NETWORK_TYPE    0
#define GPRS_NETWORK_TYPE   1


typedef enum 
{
    NETWORK_UNREGISTERED = 0,

    NETWORK_REGISTERED,

    NETWORK_BUSY,

    NETWORK_DENIED,

    NETWORK_UNKNOWN,

    NETWORK_ROAMING,
} NetworkStatus;


/**
* @brief Network interface
*/
struct NetworkInterface {

    ascii *provider_name;

    NetworkStatus network_status;

    void (*register_network_reply) ( void* ipc_data );

    void (*unregister_reply) ( void* ipc_data );

    void (*list_providers_reply) ( void* ipc_data, ascii *providers[] );

    void (*register_with_provider_reply) ( void* ipc_data );

    void (*register_network_error) ( void* ipc_data );

    void (*unregister_error) ( void* ipc_data );

    void (*get_status_error) ( void* ipc_data );

    void (*list_providers_error) ( void* ipc_data );

    void (*register_with_provider_error) ( void* ipc_data );

    void (*status) ( uint8_t type, NetworkStatus status );

    void (*subscriber_numbers) ( const char **number );
                          
};



#endif


